<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    /*对象：具体的事物，包括属性和行为
    属性：对象中的变量； 行为:属性中的函数
    如何创建对象？
        1.字面创建对象，使用较多
        2.用构造函数创建对象
        3.用Object()创建
    */
   //字面创建对象
   let cat = {
    color:'white',
    eye:'棕色',
    weight:'10kg',
    run:function(){
        console.log('running');
    }
   };
   //访问对象
   console.log(cat.color);
   cat.run();
   let kq = {}; //空对象
   console.log('---用构造函数创建对象');
   //构造函数：是一种特殊的函数，能通过这个函数构造一个对象。
   //为区别于普通函数，一般构造函数名的首字母大写
   /*  step1:定义一个构造函数，在函数中描述对象的属性和行为
        step2:用关键字new构造一个对象

   */
  function Dog(name,age,weight,color){
    //this 关键字:指当前对象
     this.name = name;
     this.age = age;
     this.weight = weight;
     this.color = color;
     this.dance = function(){
        //${this.name}..模板字符
        console.log(`${this.name}在跳舞....`);
     }
  }
  //构造函数
  let Dog = ('富贵',2,'10kg','白色');
  console.log(dog.name);
  console.log(dog.color);
  dog.dance();

  let wang= new Dog('旺财',3,'15kg','黑色');
  console.log(wang.weight);
  wang.dance();

  console.log('---用Object()创建对象---')
  let obj = new Object(); //实例化一个空的object
  obj.name = 'lihua';
  obj.age =19;
  obj.cls = '计算机三班';
  obj.play = function(){
    console.log(obj.name+"在打游戏");
  };
    obj.play();

    console.log('---新闻---');
    let news ={
        title:'上海：为，，，，',
        date:'2024....',
        content:'新华社，，，，',
        author:'王永红，姚玉洁....',
        read:function(){
            console.log('start:'+content);
        }
    }
   console.log(news.title);
   news.read();
   console.log(news['author']);
   console.log('----------');
   //遍历对象：for...in
   for(let i in news){
    console.log(i);  //获取该对象中所有属性和方法的名
    //判断获取的值的数据类型是否为function，如果是则应该调用方法
    if(typeof news[i] ==='function'){【
    news[i]();
    }else{
        
    }
    console.log(news[i]); //获取该对象中所有属性和方法

   }
  
</script>
</html>